package util

import (
	"fmt"
	"strconv"
)

// IsProxyLabels 用于标记被代理的服务 is-proxy=yes
var IsProxyLabels = map[string]string{
	"is-proxy": "yes",
}

// 生成微服务副本名字
func GenerateAliasName(name string, routineID int) string {
	// FIXME 名字可能过长
	return fmt.Sprintf("a-%s-%d", name, routineID)
}

// 生成微服务副本Pod标签 app={aliasName}
func GenerateAliasNamePodLabels(aliasName string) map[string]string {
	return map[string]string{
		"app": aliasName,
	}
}

func GetPointer[T any](value T) (pointer *T) {
	return &value
}

func MustStringToInt(s string) (i int) {
	i, err := strconv.Atoi(s)
	if err != nil {
		panic(err)
	}
	return
}

// StringLimitLength 限制字符串长度，超过长度的部分用省略号等代替
func StringLimitLength(str string, length int) string {
	if len(str) > length {
		return str[:length] + fmt.Sprintf("...(共%d个字符)", len(str))
	}
	return str
}

// FIXME 允许配置以下内容

// ChaosMeshNamespace ChaosMesh 本身的所在命名空间
const ChaosMeshNamespace = "chaos-mesh"

// ChaosMeshLabelSelector 选择 Chaos DNS Server Pod 的标签选择器
const ChaosDNSServerLabelSelector = "app.kubernetes.io/component=chaos-dns-server"

// ChaosMeshObjectNamespace ChaosMesh 保存 CRD 对象的命名空间
const ChaosMeshObjectNamespace = "tmp-chaos-mesh-crd"

// CoreDNSNamespace CoreDNS 所在命名空间
const CoreDNSNamespace = "kube-system"

// CoreDNSLabelSelector 选择 CoreDNS Pod 的标签选择器
const CoreDNSLabelSelector = "k8s-app=kube-dns"

// PauseImageName 用于模拟不可代理故障的镜像名称
const PauseImageName = "localhost:5000/google-containers/pause:latest"
